/*
 * @(#)IJsonMarshaller.java
 * Date 2013-11-03
 * Version 1.0
 * Author Jim Horner
 * Copyright (c)2012
 */


package us.hornerscorners.lamppost.transformer;

import java.io.ByteArrayOutputStream;
import java.io.IOException;


/**
 * Interface description
 *
 *
 * @version        v1.0, 2013-11-03
 * @author         Jim Horner
 */
public interface IJsonMarshaller {

    /**
     * Method description
     *
     *
     * @param item
     *
     * @return
     */
    public abstract String marshal(Object item) throws IOException;

    /**
     * Method description
     *
     *
     * @param source
     * @param peristableClass
     * @param <T>
     *
     * @return
     *
     * @throws IOException
     */
    public abstract <T> T unmarshal(byte[] source, Class<T> peristableClass)
            throws IOException;

    /**
     * Method description
     *
     *
     * @param bas
     * @param aThis
     *
     * @throws IOException
     */
    public void writeValue(ByteArrayOutputStream bas, Object aThis) throws IOException;
}
